package com.wl.designpattern.memoto;

/**
 * 备忘录模式
 *
 * Originator（发起人角色） 负责创建一个备忘录 能够记录内部状态
 * Memento (备忘录角色) 将发起人（Originator）对象的内部状态存储起来
 * Caretaker (负责人角色) 负责保存备忘录（Memoto），不能对备忘录（Memoto）的内容进行操作和访问，只能将备忘录传递给其他对象。
 *
 * 优点
 * 能够让状态回滚到某一时刻的状态
 * 实现了状态保存对象的封装，用户无需关心其实现细节。
 *
 * 缺点
 * 保存的对象如果成员变量过多的话，资源消耗也会相应增多。
 *
 * android 应用
 * Activity onSaveInstanceState onRestoreInstanceState
 *
 * Created by wangliang on 2021/2/23.
 */
public class Test {

    public static void main(String[] args) {
        System.out.println("首次进入游戏");
        Game game = new Game();
        game.play();//玩游戏
        Memoto memento = game.createMemoto();//创建存档
        Caretaker caretaker = new Caretaker();
        caretaker.setMemoto(memento);//保存存档
        game.exit();//退出游戏

        System.out.println("-------------");
        System.out.println("二次进入游戏");
        Game secondGame = new Game();
        secondGame.setMemoto(caretaker.getMemoto());//读取存档
        secondGame.play();//继续玩游戏
        secondGame.exit();//不存档,嘿嘿嘿
    }
}
